package com.inspur.edp.ai.flow.engine;

import com.inspur.edp.ai.flow.model.Output;

import java.util.function.Consumer;

public interface EventBus {
    /**
     * 订阅
     *
     * @param topic    主题
     * @param listener 监听者
     */
    void subscribe(String topic, Consumer<Output> listener);

    /**
     * 取消订阅
     *
     * @param topic    主题
     * @param listener 监听者
     */
    void unsubscribe(String topic, Consumer<Output> listener);

    /**
     * 取消订阅主题
     *
     * @param topic
     * @return
     */
    int unsubscribe(String topic);

    /**
     * 发布订阅
     *
     * @param topic
     * @param output
     */
    void publishAsync(String topic, Output output);

}
